package com.zrrd.javaSEPlus._04_reflect;

import java.lang.reflect.Method;

/**
 * @author WanJl
 * @version 1.0
 * @title ReflectMethod02
 * @description
 * @create 2023/11/12 17:05
 */
public class ReflectMethod02 {
    public static void main(String[] args) throws Exception{
        //1.获取Class对象
        Class<Student> clazz = Student.class;
        //2.获取Method对象  第一个参数是要获取的方法名称，第二个以后的参数是这个方法的参数类型
        Method method = clazz.getDeclaredMethod("method03", String.class);
        Student student = clazz.newInstance();
        //invoke第一个参数是要生成的那个对象，第二个以后的参数，是那个对象里面的方法的实际参数值。
        //也就是method03的实参
        Object o = method.invoke(student, "张三");
        System.out.println(o);

        //---上面的代码和下面的代码效果是一样的。
        Student student1 = new Student();
        String s = student1.method03("张三");
        System.out.println(s);
    }
}
